home *** CD-ROM | disk | FTP | other *** search
/ Programming a Multiplayer FPS in DirectX / Programming a Multiplayer FPS in DirectX (Companion CD).iso / DirectX / dxsdk_oct2004.exe / dxsdk.exe / Samples / Media / UI / DXUTShared.fx < prev   
Encoding:
Text File  |  2004-09-27  |  2.5 KB  |  70 lines

  1. //--------------------------------------------------------------------------------------
  2. // File: DXUTShared.fx
  3. //
  4. // 
  5. // 
  6. // Copyright (c) Microsoft Corporation. All rights reserved.
  7. //--------------------------------------------------------------------------------------
  8.  
  9.  
  10. //--------------------------------------------------------------------------------------
  11. // Global variables
  12. //--------------------------------------------------------------------------------------
  13. float4 g_MaterialDiffuseColor;      // Material's diffuse color
  14. float3 g_LightDir;                  // Light's direction in world space
  15. float4x4 g_mWorld;                  // World matrix for object
  16. float4x4 g_mWorldViewProjection;    // World * View * Projection matrix
  17.  
  18.  
  19.  
  20. //--------------------------------------------------------------------------------------
  21. // Vertex shader output structure
  22. //--------------------------------------------------------------------------------------
  23. struct VS_OUTPUT
  24. {
  25.     float4 Position   : POSITION;   // vertex position 
  26.     float4 Diffuse    : COLOR0;     // vertex diffuse color 
  27. };
  28.  
  29.  
  30. //--------------------------------------------------------------------------------------
  31. // This shader computes standard transform and lighting
  32. //--------------------------------------------------------------------------------------
  33. VS_OUTPUT RenderWith1LightNoTextureVS( float4 vPos : POSITION, 
  34.                                        float3 vNormal : NORMAL )
  35. {
  36.     VS_OUTPUT Output;
  37.   
  38.     // Transform the position from object space to homogeneous projection space
  39.     Output.Position = mul(vPos, g_mWorldViewProjection);
  40.     
  41.     // Transform the normal from object space to world space    
  42.     float3 vNormalWorldSpace;
  43.     vNormalWorldSpace = normalize(mul(vNormal, (float3x3)g_mWorld)); // normal (world space)
  44.     
  45.     // Compute simple directional lighting equation
  46.     Output.Diffuse.rgb = g_MaterialDiffuseColor * max(0,dot(vNormalWorldSpace, g_LightDir));   
  47.     Output.Diffuse.a = 1.0f; 
  48.     
  49.     return Output;    
  50. }
  51.  
  52.  
  53. //--------------------------------------------------------------------------------------
  54. float4 RenderWith1LightNoTexturePS( float4 Diffuse : COLOR0 ) : COLOR0
  55.     return Diffuse;
  56. }
  57.  
  58.  
  59. //--------------------------------------------------------------------------------------
  60. technique RenderWith1LightNoTexture
  61. {
  62.     pass P0
  63.     {          
  64.         VertexShader = compile vs_1_1 RenderWith1LightNoTextureVS();
  65.         PixelShader  = compile ps_1_1 RenderWith1LightNoTexturePS(); 
  66.     }
  67. }
  68.  
  69.